package jhlee42;

import java.util.Scanner;

public class J14Ex46CalendarV2_re {
	public static void main(String[] args) {
		String y = null;
		int addMonth2Day = 0;
		int cYear;
		int cMonth;
		//int cDay;
		int month[] = {0,31,9999,31,30,31,30,31,31,30,31,30,31};
		
		Scanner sc;
		sc = new Scanner(System.in);
		System.out.print("연도 를 입력하세요 >> ");
		cYear = sc.nextInt();
		System.out.print("월 을 입력하세요 >> ");
		cMonth = sc.nextInt();
		//System.out.print("일 을 입력세요 >> ");
		//cDay = sc.nextInt();
		
		if (cYear%4 == 0) {
				if (cYear%100 == 0) {
						if (cYear%400 == 0) {month[2] = 29; }// 윤년
						else if (cYear%400 != 0) {month[2] = 28; }//평년												
				}	
				else if (cYear%100 != 0) {month[2] = 29;} // 윤년		
		}
		else if (cYear%4 != 0) {month[2] = 28;} // 평년	
		
		for (int i = 0; i < cMonth; ++i) {addMonth2Day += month[i];	}	

		int what = (((cYear-1)*365) + ((cYear-1)/4) - ((cYear-1)/100) + ((cYear-1)/400))%7;
		what = (what+addMonth2Day +1  /*+cDay*/)%7;	 // 플러스 1
		switch (what) {
		case 0: y = "일"; break;
		case 1: y = "월"; break;
		case 2: y = "화"; break;
		case 3: y = "수"; break;
		case 4: y = "목"; break;
		case 5: y = "금"; break;
		case 6: y = "토"; break;
		default:
			break;
		} // switch (what)
		System.out.println("what 값 "+ what +" : "+cYear + " 년  " + cMonth +" 월 "+ /*cDay +" 일 은  "+*/  y +" 요일 입니다." ); // 2
		
		
		
		
		
		
		// 달력 출력
		String result = "\n\t\t\t     " +cYear;
		result += " 년 "+cMonth+" 월 "+"\n";
		result += "\t--------------------------------------------------\n";
		result += "\t일\t월\t화\t수\t목\t금\t토\n";
		
		// 줄바꿈 처리를 위한 변수
		int linecount = 0;
		
		// 공백 처리
		if (what > 0){
			for (int j = 0; j < what; ++j) {
				result +="\t";	
				++linecount;
			}
		}	
		
		// 날짜출력
		for (int k = 1; k <= month[cMonth]; ++k) {
			result += "\t" + k;
			++linecount;
			if(linecount%7==0){result+="\n";}
		}
		

		System.out.println(result);
		
		
		
		
		
		
		
		
/** 내가 짠 코드 **/		
/*		
		int[] mp = new int[41]; // 달력
		String month_result = "";
		
		int hohoho = 1;
		int adsf = 999;
		for (int e = 1; e <= 40; ++e) {			
			for (int h = 1  ; h <= what && adsf == 999; h++) {
				System.out.print("   ");
			}
			adsf = 0;
			//System.out.println("999");
				
			if(e >= what ){	
			mp[e-what] = hohoho  ;
				if(e%7==0 &&e<=9){month_result += "\n"+mp[e-what]+"  ";}
				//else if(e%7!=0 &&e<=9){month_result += "\n"+mp[e-what]+"      ";}
				
				
				else if(e%7==0){month_result += "\n"+mp[e-what]+" ";}
				else{month_result += mp[e-what]+" "   +" "+"\n";}
			hohoho += 1;
			}
		}
		System.out.print(month_result);
		
*/
		
		sc.close();
	} // main
}
